package com.gitee.wsl.flowing.actionflow.node


/**
 * 节点类型
 *
 * @author warm
 * @since 2023/3/31 12:16
 */
enum class NodeType(val key: Int,
                    val value: String) {
    /**
     * 开始节点
     */
    START(0, "start"),

    /**
     * 中间节点
     */
    BETWEEN(1, "between"),

    /**
     * 结束节点
     */
    END(2, "end"),

    /**
     * 互斥网关
     */
    SERIAL(3, "serial"),

    /**
     * 并行网关
     */
    PARALLEL(4, "parallel");


//    companion object {
//        fun getKeyByValue(value: String?): Int? {
//            for (item in entries) {
//                if (item.getValue().equals(value)) {
//                    return item.getKey()
//                }
//            }
//            return null
//        }
//
//        fun getValueByKey(Key: Int?): String? {
//            for (item in entries) {
//                if (item.getKey().equals(Key)) {
//                    return item.getValue()
//                }
//            }
//            return null
//        }
//
//        fun getByKey(key: Int?): NodeType? {
//            for (item in entries) {
//                if (item.getKey().equals(key)) {
//                    return item
//                }
//            }
//            return null
//        }
//
//        /**
//         * 判断是否开始节点
//         *
//         * @param Key
//         * @return
//         */
//        fun isStart(Key: Int?): Boolean {
//            return ObjectUtil.isNotNull(Key) && (START.getKey().equals(Key))
//        }
//
//        /**
//         * 判断是否中间节点
//         *
//         * @param Key
//         * @return
//         */
//        fun isBetween(Key: Int?): Boolean {
//            return ObjectUtil.isNotNull(Key) && (BETWEEN.getKey().equals(Key))
//        }
//
//        /**
//         * 判断是否结束节点
//         *
//         * @param Key
//         * @return
//         */
//        fun isEnd(Key: Int?): Boolean {
//            return ObjectUtil.isNotNull(Key) && (END.getKey().equals(Key))
//        }
//
//        /**
//         * 判断是否网关节点
//         *
//         * @param Key
//         * @return
//         */
//        fun isGateWay(Key: Int?): Boolean {
//            return ObjectUtil.isNotNull(Key) && (SERIAL.getKey().equals(Key)
//                    || PARALLEL.getKey().equals(Key))
//        }
//
//        /**
//         * 判断是否互斥网关节点
//         *
//         * @param Key
//         * @return
//         */
//        fun isGateWaySerial(Key: Int?): Boolean {
//            return ObjectUtil.isNotNull(Key) && SERIAL.getKey().equals(Key)
//        }
//
//        /**
//         * 判断是否并行网关节点
//         *
//         * @param Key
//         * @return
//         */
//        fun isGateWayParallel(Key: Int?): Boolean {
//            return ObjectUtil.isNotNull(Key) && PARALLEL.getKey().equals(Key)
//        }
//    }
}
